package com.ivc.info.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.cs.framework.common.util.CommonUtils;
import com.cs.framework.jdbc.common.dao.CommonDao;
import com.ivc.info.dto.base.SupplyProductDto;
import com.ivc.info.service.SupplyProductService;

/**
 * 商品供应信息
 * 
 * @author hedongzhou
 * 
 */
@Service("supplyProductService")
public class SupplyProductServiceImpl implements SupplyProductService {

	@Resource
	private CommonDao commonDao;

	/**
	 * 查询商品供应信息
	 * 
	 * @param supplyNo
	 *            商品供应信息编号
	 * @return
	 */
	public SupplyProductDto get(Long supplyNo) {
		return commonDao.getById(SupplyProductDto.class, supplyNo);
	}

	/**
	 * 查询商品供应信息总数
	 * 
	 * @param supplyProductDto
	 * @return
	 */
	public int count(SupplyProductDto supplyProductDto) {
		return commonDao.count("SupplyProduct.query", supplyProductDto);
	}

	/**
	 * 查询商品供应信息列表
	 * 
	 * @param supplyProductDto
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public <T extends SupplyProductDto> List<T> query(T supplyProductDto) {
		return (List<T>) commonDao.selectList("SupplyProduct.query", supplyProductDto, supplyProductDto,
				supplyProductDto.getClass());
	}

	/**
	 * 新增商品供应信息
	 * 
	 * @param supplyProductDto
	 * @return
	 */
	public SupplyProductDto save(SupplyProductDto supplyProductDto) {
		SupplyProductDto query = new SupplyProductDto();
		query.setSupplierNo(supplyProductDto.getSupplierNo());
		query.setProductNo(supplyProductDto.getProductNo());
		if (count(query) > 0) {
			CommonUtils.throwRun("该商品供应信息已存在");
		}

		return commonDao.save(supplyProductDto);
	}

	/**
	 * 修改商品供应信息
	 * 
	 * @param supplyProductDto
	 * @return
	 */
	public SupplyProductDto update(SupplyProductDto supplyProductDto) {
		SupplyProductDto entity = get(supplyProductDto.getSupplyNo());
		if (entity == null) {
			CommonUtils.throwRun("未查询到相关的商品供应信息");
		}

		CommonUtils.copyBoValue(entity, supplyProductDto);

		return commonDao.update(entity);
	}

}
